La transición de arreglos de estilo C a std::array representa un cambio fundamental hacia seguridad de tipo y programación genérica en C++ moderno.
1. El Problema de la Decaimiento del Puntero
Arreglos heredados (int arr[N]) sufren de "decaimiento del puntero". Cuando se pasan a funciones, pierden sus metadatos de tamaño y se convierten en un puntero crudo (int*). Esto conduce a aritmética de punteros insegura y desbordamientos de búfer.
2. La Modernización de C++11
std::array proporciona una envoltura delgada, envoltura sin sobrecarga alrededor de arreglos crudos. Se integra con la STL (Biblioteca Estándar de Plantillas) respetando el Regla de los Cinco.
3. Enfrentamiento Perfecto con std::forward
C++11 introdujo std::forward para asegurar que std::array los objetos se muevan a través de envolturas de plantilla sin copias redundantes. Al aprovechar Reglas de Colapso de Referencias, preservamos la categoría de valor del objeto (lvalue frente a rvalue).
$$T\&\& + \& \rightarrow T\&$$